﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLVatTu.Class;
using System.Globalization;
using DevComponents.DotNetBar.Controls;

namespace QLVatTu.NghiepVu
{
    public partial class frmPhieuVatTuHongMat : Form
    {
        KetNoiDB cn = new KetNoiDB();
        public string MaPhieuCapNhat = "";

        public frmPhieuVatTuHongMat()
        {
            InitializeComponent();
        }

        private void loadData()
        {
            string sql = "";
            cbbKho.DataSource = cn.getTable("SELECT [MaKho],[TenKho] FROM [tbl_Kho]");
            cbbKho.DisplayMember = "TenKho";
            cbbKho.ValueMember = "MaKho";

            VatTu.DataSource = cn.getTable("select * from tbl_VatTu");
            VatTu.DisplayMember = "TenVatTu";
            VatTu.ValueMember = "MaVatTu";

            cbbXacNhan.SelectedIndex = 0;

            if (MaPhieuCapNhat == "")
            {
                // Thêm
                txtMaPhieu.Text = cn.SinhMa("MaPhieu", "tbl_PhieuBaoHongMat", "BH");
            }
            else
            {
                // Sửa
                txtMaPhieu.Text = MaPhieuCapNhat;
                sql = @"
                    SELECT     MaKho, NguoiLapPhieu, NgayLapPhieu, XacNhan
                    FROM         dbo.tbl_PhieuBaoHongMat
                    WHERE MaPhieu = '" + MaPhieuCapNhat + "'";
                DataTable dt = cn.getTable(sql);
                if (dt.Rows.Count > 0)
                {
                    cbbKho.SelectedValue = dt.Rows[0]["MaKho"].ToString();
                    txtNguoiLapPhieu.Text = dt.Rows[0]["NguoiLapPhieu"].ToString();
                    dtipNgayLapPhieu.Value = DateTime.Parse(dt.Rows[0]["NgayLapPhieu"].ToString());
                    bool _XacNhan = bool.Parse(dt.Rows[0]["XacNhan"].ToString());
                    if (_XacNhan == true)
                    {
                        cbbXacNhan.SelectedIndex = 1;
                    }
                    else
                    {
                        cbbXacNhan.SelectedIndex = 0;
                    }

                    sql = @"
                        SELECT     dbo.tbl_ChiTietPhieuBaoHongMat.MaVatTu, dbo.tbl_DonViTinh.TenDonViTinh, dbo.tbl_ChiTietPhieuBaoHongMat.SoLuongTon, 
                                              dbo.tbl_ChiTietPhieuBaoHongMat.SoLuongMat, dbo.tbl_ChiTietPhieuBaoHongMat.SoLuongHong
                        FROM         dbo.tbl_ChiTietPhieuBaoHongMat INNER JOIN
                                              dbo.tbl_DonViTinh ON dbo.tbl_ChiTietPhieuBaoHongMat.MaDonViTinh = dbo.tbl_DonViTinh.MaDonViTinh
                        WHERE     dbo.tbl_ChiTietPhieuBaoHongMat.MaPhieu = '" + MaPhieuCapNhat + "'";
                    DataTable dtChiTiet = cn.getTable(sql);
                    if (dtChiTiet.Rows.Count > 0)
                    {
                        foreach (DataRow dr in dtChiTiet.Rows)
                        {
                            DataGridViewRow dgvr = (DataGridViewRow)dtgChiTietVatTu.Rows[0].Clone();
                            dgvr.Cells[0].Value = false;
                            dgvr.Cells[1].Value = dr["MaVatTu"].ToString();
                            dgvr.Cells[2].Value=dr["TenDonViTinh"].ToString();

                            sql = @"
                                SELECT     SUM(SoLuong) as SoLuongTonKho
                                FROM         dbo.tbl_LuuKho
                                WHERE MaKho = '" + cbbKho.SelectedValue + "' AND MaVatTu = '" + dr["MaVatTu"].ToString() + "'";
                            string strSoLuong = cn.LayDuLieu(sql);
                            float SoLuong = 0;
                            if (strSoLuong != null && strSoLuong != "" && float.Parse(strSoLuong) > 0) SoLuong = float.Parse(strSoLuong);
                            dgvr.Cells[3].Value = SoLuong;
                            dgvr.Cells[4].Value = dr["SoLuongMat"].ToString();
                            dgvr.Cells[5].Value = dr["SoLuongHong"].ToString();
                            dtgChiTietVatTu.Rows.Add(dgvr);
                        }
                    }
                }
            }
        }

        private void frmPhieuVatTuHongMat_Load(object sender, EventArgs e)
        {
            if (cn.KetNoi())
            {
                loadData();
            }
            else
            {
                MessageBox.Show("Kết nối CSDL thất bại!");
                this.Close();
            }
        }

        private bool kiem_tra_lap_vat_tu(int rowIndex)
        {
            foreach (DataGridViewRow dgvr in dtgChiTietVatTu.Rows)
            {
                if (dgvr.IsNewRow) continue;
                if (dgvr.Index != rowIndex && dgvr.Cells[1].Value != null && dgvr.Cells[2].Value != null
                    && dgvr.Cells[1].Value.ToString() == dtgChiTietVatTu.Rows[rowIndex].Cells[1].Value.ToString()
                    && dgvr.Cells[2].Value.ToString() == dtgChiTietVatTu.Rows[rowIndex].Cells[2].Value.ToString())
                {
                    dgvr.Cells[1].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[1].HeaderText + " đã được chọn ";
                    dgvr.Cells[2].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[2].HeaderText + " đã được chọn ";
                    dtgChiTietVatTu.Rows[rowIndex].Cells[1].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[1].HeaderText + " đã được chọn ";
                    dtgChiTietVatTu.Rows[rowIndex].Cells[2].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[2].HeaderText + " đã được chọn ";
                    return false;
                }
                else
                {
                    dgvr.Cells[1].ErrorText = "";
                    dgvr.Cells[2].ErrorText = "";
                    dtgChiTietVatTu.Rows[rowIndex].Cells[1].ErrorText = "";
                    dtgChiTietVatTu.Rows[rowIndex].Cells[2].ErrorText = "";
                }
            }
            return true;
        }

        private bool IsValid()
        {
            bool kt = true;
            if (cbbKho.SelectedValue == null)
            {
                MessageBox.Show("Bạn chưa chọn kho.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                cbbKho.Focus();
                kt = false;
            }
            else if (txtNguoiLapPhieu.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập tên người lập phiếu.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtNguoiLapPhieu.Focus();
                kt = false;
            }
            else if (dtgChiTietVatTu.Rows.Count <= 1)
            {
                MessageBox.Show("Bạn chưa nhập thông tin vật tư.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                dtgChiTietVatTu.Focus();
                kt = false;
            }

            else if (cbbXacNhan.Text == null)
            {
                MessageBox.Show("Bạn chưa chọn xác nhận.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                cbbXacNhan.Focus();
                kt = false;
            }
            else
            {
                string sql = "select MIN(NgayNhap) from tbl_PhieuNhapKho where XacNhan=1";
                DateTime dtNgayNhapNhoNhat = DateTime.Parse(cn.LayDuLieu(sql));

                if (dtipNgayLapPhieu.Value > DateTime.Now || dtipNgayLapPhieu.Value < dtNgayNhapNhoNhat)
                {
                    MessageBox.Show("Ngày lập phiếu không hợp lý", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    dtipNgayLapPhieu.Focus();
                    kt = false;
                }
            }
            foreach (DataGridViewRow dgvr in dtgChiTietVatTu.Rows)
            {
                if (dgvr.IsNewRow) continue;
                if (dgvr.Cells["VatTu"].Value == null)
                {
                    dgvr.Cells["VatTu"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["VatTu"].ColumnIndex].HeaderText + " chưa nhập ";
                    kt = false;
                }
                else
                {
                    dgvr.Cells["VatTu"].ErrorText = "";
                    if (dgvr.Cells["DonViTinh"].Value == null)
                    {
                        dgvr.Cells["DonViTinh"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["DonViTinh"].ColumnIndex].HeaderText + " chưa nhập ";
                        kt = false;
                    }
                    else
                    {
                        dgvr.Cells["DonViTinh"].ErrorText = "";
                        if (kiem_tra_lap_vat_tu(dgvr.Index) == false)
                        {
                            kt = false;
                        }
                    }
                }

                string strSoLuong;
                float SoLuong = 0;
                string strSoLuongMat;
                float SoLuongMat = 0;
                string strSoLuongHong;
                float SoLuongHong = 0;
                if (dgvr.Cells["SoluongTon"].Value == null)
                {
                    dgvr.Cells["SoluongTon"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["Soluong"].ColumnIndex].HeaderText + " chưa hiển thị";
                    kt = false;
                }
                else
                {
                    if (dgvr.Cells["SoLuongTon"].Value.ToString().Contains(','))
                    {
                        strSoLuong = dgvr.Cells["SoluongTon"].Value.ToString().Replace(',', '.');
                    }
                    else
                    {
                        strSoLuong = dgvr.Cells["SoluongTon"].Value.ToString();
                    }
                    float.TryParse(strSoLuong, out SoLuong);
                    dgvr.Cells["SoluongTon"].ErrorText = "";
                }

                if (dgvr.Cells["SoluongMat"].Value == null || dgvr.Cells["SoluongMat"].Value.ToString() == "")
                {
                    dgvr.Cells["SoluongMat"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoluongMat"].ColumnIndex].HeaderText + " chưa nhập";
                    kt = false;
                }
                else
                {
                    if (dgvr.Cells["SoluongMat"].Value.ToString().Contains(','))
                    {
                        strSoLuongMat = dgvr.Cells["SoluongMat"].Value.ToString().Replace(',', '.');
                    }
                    else
                    {
                        strSoLuongMat = dgvr.Cells["SoluongMat"].Value.ToString();
                    }

                    float.TryParse(strSoLuongMat, out SoLuongMat);
                    if (SoLuongMat < 0)
                    {
                        dgvr.Cells["SoluongMat"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoluongMat"].ColumnIndex].HeaderText + " không được nhỏ hơn 0 ";
                        kt = false;
                    }
                    else
                    {
                        dgvr.Cells["SoluongMat"].ErrorText = "";
                    }
                }

                if (dgvr.Cells["SoLuongHong"].Value == null || dgvr.Cells["SoLuongHong"].Value.ToString() == "")
                {
                    dgvr.Cells["SoLuongHong"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoLuongHong"].ColumnIndex].HeaderText + " chưa nhập";
                    kt = false;
                }
                else
                {
                    if (dgvr.Cells["SoLuongHong"].Value.ToString().Contains(','))
                    {
                        strSoLuongHong = dgvr.Cells["SoLuongHong"].Value.ToString().Replace(',', '.');
                    }
                    else
                    {
                        strSoLuongHong = dgvr.Cells["SoLuongHong"].Value.ToString();
                    }

                    float.TryParse(strSoLuongHong, out SoLuongHong);
                    if (SoLuongMat < 0)
                    {
                        dgvr.Cells["SoLuongHong"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoLuongHong"].ColumnIndex].HeaderText + " không được nhỏ hơn 0 ";
                        kt = false;
                    }
                    else
                    {
                        dgvr.Cells["SoLuongHong"].ErrorText = "";
                    }
                }

                if (SoLuongMat > SoLuong)
                {
                    dgvr.Cells["SoLuongMat"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoLuongMat"].ColumnIndex].HeaderText + " phải nhỏ hơn số lượng tồn kho";
                    kt = false;
                }

                if (SoLuongHong > SoLuong)
                {
                    dgvr.Cells["SoLuongHong"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoLuongHong"].ColumnIndex].HeaderText + " phải nhỏ hơn số lượng tồn kho ";
                    kt = false;
                }

                if (Math.Round((SoLuongMat + SoLuongHong),2) > SoLuong)
                {
                    dgvr.Cells["SoLuongMat"].ErrorText = "Tổng số lượng hỏng và mất phải nhỏ hơn số lượng tồn kho";
                    dgvr.Cells["SoLuongHong"].ErrorText = "Tổng số lượng hỏng và mất phải nhỏ hơn số lượng tồn kho";
                    kt = false;
                }

            }
            return kt;
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (IsValid())
            {
                string MaPhieu = txtMaPhieu.Text;
                string MaKho = cbbKho.SelectedValue.ToString();
                string NguoiLapPhieu = txtNguoiLapPhieu.Text;
                string NgayLapPhieu = dtipNgayLapPhieu.Value.ToString("yyyy-MM-dd");
                byte XacNhan = 0;
                if (cbbXacNhan.Text == "Đã xác nhận")
                {
                    XacNhan = 1;
                }

                string sql = "";
                string MaDonViTinh = "";
                string strSoLuongMat;
                float SoLuongMat = 0;
                string strSoLuongHong;
                float SoLuongHong = 0;

                if (MaPhieuCapNhat == "")
                {
                    cn.Insert_Table("[tbl_PhieuBaoHongMat]", "[MaPhieu],[MaKho],[NguoiLapPhieu],[NgayLapPhieu],[XacNhan]", "'" + MaPhieu + "','" + MaKho + "','" + NguoiLapPhieu + "','" + NgayLapPhieu + "','" + XacNhan + "'");
                    foreach (DataGridViewRow dgvr in dtgChiTietVatTu.Rows)
                    {
                        if (dgvr.IsNewRow) continue;
                        string MaVatTu = dgvr.Cells["VatTu"].Value.ToString();
                        string SoLuong = dgvr.Cells["SoLuongTon"].Value.ToString();
                       

                        if (dgvr.Cells["SoLuongMat"].Value.ToString().Contains(','))
                        {
                            strSoLuongMat = dgvr.Cells["SoLuongMat"].Value.ToString().Replace(',', '.');
                        }
                        else
                        {
                            strSoLuongMat = dgvr.Cells["SoLuongMat"].Value.ToString();
                        }
                        float.TryParse(strSoLuongMat, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuongMat);

                        if (dgvr.Cells["SoLuongHong"].Value.ToString().Contains(','))
                        {
                            strSoLuongHong = dgvr.Cells["SoLuongHong"].Value.ToString().Replace(',', '.');
                        }
                        else
                        {
                            strSoLuongHong = dgvr.Cells["SoLuongHong"].Value.ToString();
                        }
                        float.TryParse(strSoLuongHong, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuongHong);

                        sql = "select MaDonViTinh from tbl_VatTu where MaVatTu='" + dgvr.Cells["VatTu"].Value.ToString() + "'";
                        DataTable dt = cn.getTable(sql);
                        if (dt.Rows.Count > 0)
                        {
                            MaDonViTinh = dt.Rows[0]["MaDonViTinh"].ToString();
                        }

                        cn.Insert_Table("tbl_ChiTietPhieuBaoHongMat", "[MaPhieu],[MaVatTu],[MaDonViTinh],[SoLuongTon],[SoLuongMat],[SoLuongHong]", "'" + MaPhieu + "','" + MaVatTu + "','" + MaDonViTinh + "','" + SoLuong.ToString().Replace(",", ".") + "','" + SoLuongMat.ToString().Replace(",", ".") + "','" + SoLuongHong.ToString().Replace(",", ".") + "'");

                        // Xác nhận phiếu
                        if (XacNhan == 1)
                        {
                            double SoLuongHongMat = -Math.Round((SoLuongHong + SoLuongMat),2);
                            cn.Insert_Table("tbl_LuuKho", "[SoPhieu],[MaKho],[MaVatTu],[SoLuong],[SoLuongPhePham],[NgayCapNhat]", "'" + MaPhieu + "','" + MaKho + "','" + MaVatTu + "','" + SoLuongHongMat.ToString().Replace(",",".") + "','" + SoLuongHong.ToString().Replace(",",".") + "','" + NgayLapPhieu + "'");
                        }

                    }
                    HangSo.Luu_Hanh_Dong(HangSo.TenDangNhap, HangSo.TenQuyenHan, HangSo.TenNguoiDung, "Thêm phiếu báo mất hỏng vật tư.");
                }
                else
                {
                    cn.Update_Table("tbl_PhieuBaoHongMat", "MaPhieu='" + MaPhieu + "',MaKho='" + MaKho + "',NguoiLapPhieu=N'" + NguoiLapPhieu + "',NgayLapPhieu='" + NgayLapPhieu + "',XacNhan='" + XacNhan + "'", "MaPhieu='" + MaPhieu + "'");

                    cn.Delete_Table("tbl_ChiTietPhieuBaoHongMat", "MaPhieu ='" + MaPhieu + "'");

                    foreach (DataGridViewRow dgvr in dtgChiTietVatTu.Rows)
                    {
                        if (dgvr.IsNewRow) continue;
                        string MaVatTu = dgvr.Cells["VatTu"].Value.ToString();
                        string SoLuong = dgvr.Cells["SoLuongTon"].Value.ToString();

                        if (dgvr.Cells["SoLuongMat"].Value.ToString().Contains(','))
                        {
                            strSoLuongMat = dgvr.Cells["SoLuongMat"].Value.ToString().Replace(',', '.');
                        }
                        else
                        {
                            strSoLuongMat = dgvr.Cells["SoLuongMat"].Value.ToString();
                        }
                        float.TryParse(strSoLuongMat, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuongMat);

                        if (dgvr.Cells["SoLuongHong"].Value.ToString().Contains(','))
                        {
                            strSoLuongHong = dgvr.Cells["SoLuongHong"].Value.ToString().Replace(',', '.');
                        }
                        else
                        {
                            strSoLuongHong = dgvr.Cells["SoLuongHong"].Value.ToString();
                        }
                        float.TryParse(strSoLuongHong, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuongHong);

                        sql = "select MaDonViTinh from tbl_VatTu where MaVatTu='" + dgvr.Cells["VatTu"].Value.ToString() + "'";
                        DataTable dt = cn.getTable(sql);
                        if (dt.Rows.Count > 0)
                        {
                            MaDonViTinh = dt.Rows[0]["MaDonViTinh"].ToString();
                        }

                        cn.Insert_Table("tbl_ChiTietPhieuBaoHongMat", "[MaPhieu],[MaVatTu],[MaDonViTinh],[SoLuongTon],[SoLuongMat],[SoLuongHong]", "'" + MaPhieu + "','" + MaVatTu + "','" + MaDonViTinh + "','" + SoLuong.ToString().Replace(",", ".") + "','" + SoLuongMat.ToString().Replace(",", ".") + "','" + SoLuongHong.ToString().Replace(",", ".") + "'");

                        // Xác nhận phiếu
                        if (XacNhan == 1)
                        {
                            double SoLuongHongMat = -Math.Round((SoLuongHong + SoLuongMat),2);
                            cn.Insert_Table("tbl_LuuKho", "[SoPhieu],[MaKho],[MaVatTu],[SoLuong],[SoLuongPhePham],[NgayCapNhat]", "'" + MaPhieu + "','" + MaKho + "','" + MaVatTu + "','" + SoLuongHongMat.ToString().Replace(",", ".") + "','" + SoLuongHong.ToString().Replace(",",".") + "','" + NgayLapPhieu + "'");
                        }

                    }
                    HangSo.Luu_Hanh_Dong(HangSo.TenDangNhap, HangSo.TenQuyenHan, HangSo.TenNguoiDung, "Sửa phiếu báo hỏng mất vật tư.");
                }
                this.Close();
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            dtgChiTietVatTu.Rows.Clear();
        }

        private void btnXoaChon_Click(object sender, EventArgs e)
        {
            for (int i = dtgChiTietVatTu.Rows.Count - 1; i >= 0; i--)
            {
                if (dtgChiTietVatTu.Rows[i].Cells[0].Value != null)
                {
                    if (bool.Parse(dtgChiTietVatTu.Rows[i].Cells[0].Value.ToString()) == true) dtgChiTietVatTu.Rows.RemoveAt(i);
                }
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void Validate_ChiTietVatTu()
        {
            bool kt;
            foreach (DataGridViewRow dgvr in dtgChiTietVatTu.Rows)
            {
                if (dgvr.IsNewRow) continue;
                if (dgvr.Cells["VatTu"].Value == null)
                {
                    dgvr.Cells["VatTu"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["VatTu"].ColumnIndex].HeaderText + " chưa nhập ";
                    kt = false;
                }
                else
                {
                    dgvr.Cells["VatTu"].ErrorText = "";
                    if (dgvr.Cells["DonViTinh"].Value == null)
                    {
                        dgvr.Cells["DonViTinh"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["DonViTinh"].ColumnIndex].HeaderText + " chưa nhập ";
                        kt = false;
                    }
                    else
                    {
                        dgvr.Cells["DonViTinh"].ErrorText = "";
                        if (kiem_tra_lap_vat_tu(dgvr.Index) == false)
                        {
                            kt = false;
                        }
                    }
                }

                string strSoLuong;
                float SoLuong = 0;
                string strSoLuongMat;
                float SoLuongMat = 0;
                string strSoLuongHong;
                float SoLuongHong = 0;
                if (dgvr.Cells["SoluongTon"].Value == null)
                {
                    dgvr.Cells["SoluongTon"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["Soluong"].ColumnIndex].HeaderText + " chưa hiển thị";
                    kt = false;
                }
                else
                {
                    if (dgvr.Cells["SoLuongTon"].Value.ToString().Contains(','))
                    {
                        strSoLuong = dgvr.Cells["SoluongTon"].Value.ToString().Replace(',', '.');
                    }
                    else
                    {
                        strSoLuong = dgvr.Cells["SoluongTon"].Value.ToString();
                    }
                    float.TryParse(strSoLuong, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuong);
                    dgvr.Cells["SoluongTon"].ErrorText = "";
                }

                if (dgvr.Cells["SoluongMat"].Value == null || dgvr.Cells["SoluongMat"].Value.ToString() == "")
                {
                    dgvr.Cells["SoluongMat"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoluongMat"].ColumnIndex].HeaderText + " chưa nhập";
                    kt = false;
                }
                else
                {
                    if (dgvr.Cells["SoluongMat"].Value.ToString().Contains(','))
                    {
                        strSoLuongMat = dgvr.Cells["SoluongMat"].Value.ToString().Replace(',', '.');
                    }
                    else
                    {
                        strSoLuongMat = dgvr.Cells["SoluongMat"].Value.ToString();
                    }

                    float.TryParse(strSoLuongMat, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuongMat);
                    if (SoLuongMat < 0)
                    {
                        dgvr.Cells["SoluongMat"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoluongMat"].ColumnIndex].HeaderText + " không được nhỏ hơn 0 ";
                        kt = false;
                    }
                    else
                    {
                        dgvr.Cells["SoluongMat"].ErrorText = "";
                    }
                }

                if (dgvr.Cells["SoLuongHong"].Value == null || dgvr.Cells["SoLuongHong"].Value.ToString() == "")
                {
                    dgvr.Cells["SoLuongHong"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoLuongHong"].ColumnIndex].HeaderText + " chưa nhập";
                    kt = false;
                }
                else
                {
                    if (dgvr.Cells["SoLuongHong"].Value.ToString().Contains(','))
                    {
                        strSoLuongHong = dgvr.Cells["SoLuongHong"].Value.ToString().Replace(',', '.');
                    }
                    else
                    {
                        strSoLuongHong = dgvr.Cells["SoLuongHong"].Value.ToString();
                    }

                    float.TryParse(strSoLuongHong, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuongHong);
                    if (SoLuongMat < 0)
                    {
                        dgvr.Cells["SoLuongHong"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoLuongHong"].ColumnIndex].HeaderText + " không được nhỏ hơn 0 ";
                        kt = false;
                    }
                    else
                    {
                        dgvr.Cells["SoLuongHong"].ErrorText = "";
                    }
                }

                if (SoLuongMat > SoLuong)
                {
                    dgvr.Cells["SoLuongMat"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoLuongMat"].ColumnIndex].HeaderText + " phải nhỏ hơn số lượng tồn kho";
                    kt = false;
                }

                if (SoLuongHong > SoLuong)
                {
                    dgvr.Cells["SoLuongHong"].ErrorText = "Lỗi: " + dtgChiTietVatTu.Columns[dgvr.Cells["SoLuongHong"].ColumnIndex].HeaderText + " phải nhỏ hơn số lượng tồn kho ";
                    kt = false;
                }

                if ((SoLuongMat + SoLuongHong) > SoLuong)
                {
                    dgvr.Cells["SoLuongMat"].ErrorText = "Tổng số lượng hỏng và mất phải nhỏ hơn số lượng tồn kho";
                    dgvr.Cells["SoLuongHong"].ErrorText = "Tổng số lượng hỏng và mất phải nhỏ hơn số lượng tồn kho";
                    kt = false;
                }
            }
        }

        private void dtgChiTietVatTu_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            string sql = "";
            if (dtgChiTietVatTu.RowCount > 0 && e.RowIndex != -1 && !dtgChiTietVatTu.Rows[e.RowIndex].IsNewRow)
            {
                sql = @"SELECT     dbo.tbl_DonViTinh.TenDonViTinh
                            FROM         dbo.tbl_DonViTinh INNER JOIN
                                                  dbo.tbl_VatTu ON dbo.tbl_DonViTinh.MaDonViTinh = dbo.tbl_VatTu.MaDonViTinh
                            WHERE     dbo.tbl_VatTu.MaVatTu ='" + dtgChiTietVatTu.Rows[e.RowIndex].Cells[1].Value.ToString() + "'";
                DataGridViewTextBoxCell TenDonViTinh = (DataGridViewTextBoxCell)dtgChiTietVatTu.Rows[e.RowIndex].Cells[2];
                TenDonViTinh.Value = cn.LayDuLieu(sql);

                sql = "select sum(SoLuong) as SoLuonTonKho from tbl_LuuKho where MaKho='" + cbbKho.SelectedValue.ToString() + "' and MaVatTu='" + dtgChiTietVatTu.Rows[e.RowIndex].Cells[1].Value.ToString() + "'";
                string strSoLuongTonKho = cn.LayDuLieu(sql);
                float SoLuongTonKho = 0;

                if (strSoLuongTonKho != null && strSoLuongTonKho != "" && float.Parse(strSoLuongTonKho) > 0) SoLuongTonKho = float.Parse(strSoLuongTonKho);
                DataGridViewTextBoxCell txtSoLuongTonKho = (DataGridViewTextBoxCell)dtgChiTietVatTu.Rows[e.RowIndex].Cells[3];
                txtSoLuongTonKho.Value = null;
                txtSoLuongTonKho.Value = SoLuongTonKho;

                Validate_ChiTietVatTu();
            }
        }

        private void cbbKho_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbbKho.SelectedValue != null)
            {
                string sql = "";
                foreach (DataGridViewRow dgvr in dtgChiTietVatTu.Rows)
                {
                    if (dgvr.IsNewRow) continue;
                    if (dgvr.Cells[1].Value != null && dgvr.Cells[2].Value != null)
                    {
                        sql = @"
                            SELECT     SUM(SoLuong) as SoLuongTonKho
                            FROM         dbo.tbl_LuuKho
                            WHERE MaKho = '" + cbbKho.SelectedValue + "' AND MaVatTu = '" + dgvr.Cells[1].Value.ToString() + "'";
                        string strSoLuong = cn.LayDuLieu(sql);
                        float SoLuong = 0;
                        if (strSoLuong != null && strSoLuong != "" && float.Parse(strSoLuong) > 0) SoLuong = float.Parse(strSoLuong);
                        dgvr.Cells[3].Value = SoLuong;
                    }
                }
            }
        }

    }
}
